java execution steps